# author :wyq
import time
# 装饰器 高阶函数+嵌套函数 = 装饰器

def decoratorTest(func):
    # 加非固定参数就是为了传参 有的函数需要传入参数，有的不需要，这是为了通用。
    def bar(*args,**kwargs):
        start_time = time.time()
        func(*args,**kwargs)
        stop_time = time.time()
        print('the func run time is %s' %(stop_time-start_time))
     #这部分返回的是bar函数的内存地址
    return bar
# 这个@符号就是Python给的语法糖实际上等于下面自己写的赋值语句

@decoratorTest
def test1():
    time.sleep(3)
    print('in the test1')

# test2 = decoratorTest(test2) = bar  test2(name) = bar(name)
@decoratorTest
def test2(name):
    time.sleep(3)
    print('in the test2',name)


# 装饰器的调用 --》自己写的
# test1 = decoratorTest(test1)
# test1()

test1()
test2('wang')
